#ifndef BASEMULTSEL_H
#define BASEMULTSEL_H

#include "BaseListeSel.h"

/**
 * Classe abstraite permettant la sélection de catégories (au sens
 * abstrait), appelant ensuite un dialog modal pour gérer le choix.
 *
 * On utilise une classe abstraite pour définir une méthode
 * selectionner, commune à la sélection de compétences, sorts ou
 * compétences martiales.
 *
 * Ici le choix est toujours exclusif (une catégorie à la fois) et
 * gratuit.
 *
 * @author Johan "Solo" Luisier
 */
class BaseMultSel : public BaseListeSel
{
  Q_OBJECT
 public:
  BaseMultSel(const unsigned int & nbr, std::vector<std::string> noms,
	      const std::string& titre, const std::string& nomFenetre,
	      QWidget* parent = 0);
  BaseMultSel(const unsigned int & nbr, const std::string *noms,
	      const std::string& titre, const std::string& nomFenetre,
	      QWidget* parent = 0);
  BaseMultSel(const BaseMultSel& multSel);
  virtual ~BaseMultSel();
 protected:
 private slots:
  /**
   * Est appelé lorsque le bouton "OK" est pressé. Cette méthode gère
   * la création du popup permettant la sélection. Est ici virtuelle
   * pure car le code est propre à chaque classe dérivée (appel à
   * différents type de popup).
   */
  virtual void selectionner() = 0;
};

#endif // BASEMULTSEL_H
